package com._51doit.day01.xingge例子

object CallByName {

  def m1(x: Int): Double = {
    x * 10.0
  }
  
  def main(args: Array[String]): Unit = {
    
    val arr = Array(1,2,3,4,5,6,7,8,9)

    //本质上调用了scala的一种特殊的语法，call by name
    //其实传入的是方法名
    val r1: Array[Double] = arr.map(m1)

    //等价于
    //val r2: Array[Double] = arr.map(m1 _)

    //一个方法名后面跟空格和下划线，会得到一个新的函数
    //这个新的函数调用了原来的方法

    val f = m1 _

    //val f = (x: Int) => m1(x)

    val r = f(6)

    println(r)
  }
}
